package com.puboot.common.util;

import java.math.BigDecimal;
import java.util.List;

/**
 * 平板玻璃
 * Created by chen on 2021/12/25.
 */
public class PlateGlassUtil {

    /**
     * 温室气体排放总量，单位为t
     * @param eBurn 燃料燃烧二氧化碳排放量，单位为t
     * @param eToner 原料配料中碳粉氧化产生的排放量，单位为t
     * @param eDecompose 原料碳酸盐分解产生的排放量，单位为t
     * @param ePurchaseElectric 购入电力对应的二氧化碳排放量，单位为t
     * @param ePurchaseHeat 购入热力对应的二氧化碳排放量，单位为t
     * @param eOutputElectric 输出电力对应二氧化碳排放量，单位为t
     * @param eOutputHeat 输出热力对应二氧化碳排放量，单位为t
     * @return
     */
    public static Double getE(Double eBurn, Double eToner, Double eDecompose,
                              Double ePurchaseElectric, Double ePurchaseHeat, Double eOutputElectric,
                              Double eOutputHeat) {
        BigDecimal eOutputElectricB = new BigDecimal(eOutputElectric);
        BigDecimal eOutputHeatB = new BigDecimal(eOutputHeat);
        BigDecimal jsgc1 = GasDCUtil.allAdd(eBurn, eToner, eDecompose, ePurchaseElectric, ePurchaseHeat);
        BigDecimal jsgc2 = jsgc1.subtract(eOutputElectricB);
        BigDecimal jsgc3 = jsgc2.subtract(eOutputHeatB);
        return jsgc3.doubleValue();
    }

    /**
     * 原料配料中碳粉氧化产生的排放量，单位为t
     * @param qc 原料配料中碳粉消耗量，单位为t
     * @param cc 碳粉含碳量的加权平均值，单位为%
     * @return
     */
    public static Double getEToner(Double qc, Double cc){
        BigDecimal cl = new BigDecimal(12);
        BigDecimal jsgc = GasDCUtil.allMul(qc, cc, 44.0);
        return jsgc.divide(cl, 10, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
     * 原料碳酸盐分解产生的排放量，单位为t
     * @param mfis 碳酸盐i的质量含量，单位为%
     * @param mis 碳酸盐矿石i的质量，单位为t
     * @param efis 第i种碳酸盐排放因子
     * @param fis 第i种碳酸盐的煅烧比例，单位为%
     * @return
     */
    public static Double getEDecompose(List<String> mfis, List<String> mis, List<String> efis, List<String> fis){
        BigDecimal result = new BigDecimal(0.0);
        for (int i = 0; i < mfis.size(); i++) {
            BigDecimal jsgc1 = GasDCUtil.allMul(Double.valueOf(mfis.get(i)), Double.valueOf(mis.get(i)),
                    Double.valueOf(efis.get(i)), Double.valueOf(fis.get(i)));
            result = result.add(jsgc1);
        }
        return result.doubleValue();
    }

}
